package com.example.ad.sdk

import android.content.Context
import com.example.ad.sdk.configs.AdConfig
import com.example.ad.sdk.domain.helper.BuildConfigHelper
import com.example.ad.sdk.domain.helper.ContextHelper
import com.example.ad.sdk.domain.manager.AdManager
import kotlin.concurrent.Volatile

/**
 * 广告SDK入口类
 *
 * 提供SDK初始化和核心功能访问的单例对象。
 * 负责初始化上下文、配置信息和依赖注入框架。
 */
object AdSdk {
    /**
     * SDK配置对象，使用@Volatile注解确保多线程环境下的可见性
     */
    @Volatile
    private var config: AdConfig? = null

    /**
     * 初始化SDK
     *
     * 完成SDK运行所需的各种初始化操作，包括上下文初始化、配置信息设置和依赖注入框架启动。
     *
     * @param context 应用上下文对象
     * @param config 广告配置对象
     * @return 初始化结果，始终返回true
     */
    fun init(context: Context, config: AdConfig): Boolean {
        ContextHelper.init(context)
        BuildConfigHelper.initConfig(config)
//        initKoin()
        return true
    }

    /**
     * 获取广告管理器实例
     *
     * @return AdManager广告管理器单例实例
     */
    fun getAdManager(): AdManager {
        return AdManager.Companion.to
    }

}